package com.hare.harelearn.DataStructure.StrAlgorithm;

/**
 * @program: HareLearn
 * @description: 字符串相加
 * @author: Hare
 * @create: 2025−02-21 12:41
 * @Version 1.0
 **/
public class 字符串相加 {

    public static void main(String[] args) {
        System.out.println(addStrings("1", "9"));
    }


    /**
     * 给定两个字符串形式的非负整数 num1 和num2 ，计算它们的和并同样以字符串形式返回。
     * <p>
     * 你不能使用任何內建的用于处理大整数的库（比如 BigInteger）， 也不能直接将输入的字符串转换为整数形式。
     *
     * @param num1
     * @param num2
     * @return
     */
    public static String addStrings(String num1, String num2) {
        int a = num1.length() - 1;
        int b = num2.length() - 1;

        // 记位
        int temp = 0;
        StringBuffer str = new StringBuffer();
        while (a >= 0 || b >= 0 || temp!=0) {
            // 得到每一位上的数值
            int resultA = a >= 0 ? num1.charAt(a) - '0' : 0;
            int resultB = b >= 0 ? num2.charAt(b) - '0' : 0;

            int sum = resultA + resultB + temp;
            int resultSum = sum % 10;
            temp = sum / 10;

            str.append(resultSum);
            a--;
            b--;
        }
        return str.reverse().toString();

    }
}
